const app = getApp()
// pages/person/person.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null, //用户信息
    role: '', //用户角色
  },

  //获取OPENID 
  getOpenID() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: res => {
          // console.log(res)
          if (res.code) {
            wx.request({
              url: app.globalData.server + '/wxlogin',
              data: {
                code: res.code
              },
              success: result => {
                // console.log(result) 
                //result.data.openid; 
                if (result.data.status == 'ok') {
                  resolve(result.data.openid)
                } else {
                  console.log(result.data.errMsg)
                  reject('err')
                }
              },
              fail: error => {
                console.log(error)
                reject('err')
              }
            })
          } else {
            reject('err')
          }
        },
        fail: err => {
          reject('err')
        }
      })
    })
  },

  // 读取用户信息
  getUserFromDB(userInfo) {
    //console.log(userInfo) 
    return new Promise((resolve, reject) => {
      //向服务端发送数据 
      wx.request({
        url: `${app.globalData.server}/wxGetUserInfo`,
        method: 'POST',
        data: {
          userInfo
        },
        success: res => {
          //console.log(res) 
          if (res.data.status == 'ok') {
            resolve(res.data.value)
          } else {
            reject('err')
          }
        },
        fail: err => {
          console.log(err)
          reject('err')
        }
      })
    })
  },

  // 用户授权登录
  userLogin() {
    wx.getUserProfile({
      desc: '将要获取您的个人信息',
      success: async res => {
        // 显示加载中
        wx.showLoading()
        await this.getOpenID()
        console.log('我再getOpenId后面')
        // console.log(res)
        let userInfo = {
          nickName: res.userInfo.nickName,
          avatarUrl: res.userInfo.avatarUrl,
          gender: res.userInfo.gender
        }
        const openid = await this.getOpenID()
        if (openid == 'err') {
          wx.showToast({
            title: '服务器错误',
            icon: 'error'
          })
          return false
        }
        userInfo = Object.assign({}, userInfo, {
          openid
        })
        //后端判断用户是否存在于数据库中，并返回用户信息 
        userInfo = await this.getUserFromDB(userInfo)
        if (userInfo == 'err') {
          wx.showToast({
            title: '服务器错误',
            icon: 'error'
          })
          return
        }
        this.setData({
          userInfo
        })
        wx.setStorageSync('userInfo', userInfo)
        app.globalData.userInfo = userInfo
        wx.hideLoading()
      },
      fail: err => {
        console.log(err)
        wx.showToast({
          title: '服务器错误',
          icon: 'error'
        })
      }
    })
  },

  // 微信客服
  copyWX() {
    wx.setClipboardData({
      data: '666666',
    })
  },

  // 跳转
  userInfo() {
    if (this.data.userInfo) {
      wx.navigateTo({
        url: '/pages/personInfo/personInfo',
      })
    }
  },

  //申请接单 
  personApply() {
    //判断用户是否登录 
    const openid = app.globalData.userInfo.openid
    if (!openid) {
      wx.showToast({
        title: '请授权登录',
        icon: "error"
      })
      return
    }
    //读取用户接单数据 
    wx.request({
      url: `${app.globalData.server}/wxGetUser`,
      data: {
        openid
      },
      success: res => {
        //console.log(res) 
        const {
          personInfo
        } = res.data.result
        if (res.data.result) {
          if (personInfo) {
            switch (personInfo.status) {
              case "未审核":
                wx.showToast({
                  title: '正在审核',
                  icon: "error"
                })
                break;
              case "通过审核":
                wx.showToast({
                  title: '您已是接单员',
                  icon: "error"
                })
                break;
              case "未通过审核":
                wx.showModal({
                  title: "提示",
                  content: "未通过审核，请联系管理员！",
                  showCancel: false
                })
                break;
            }
          } else {
            //用户申请接单员信息不存在 
            wx.navigateTo({
              url: '../personApply/personApply',
            })
          }
        } else {
          wx.showToast({
            title: '请先授权登录',
            icon: 'error'
          })
        }
      },
      fail: err => {
        console.log(err)
      }
    })
  },

  // 跳转关于我们
  toAboutOur() {
    wx.navigateTo({
      url: '../../pages/aboutOur/aboutOur',
    })
  },

  //审核接单申请 
  personVerify() {
    wx.navigateTo({
      url: '../personVerify/personVerify',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    //读取全局变量userInfo 
    const {
      userInfo
    } = app.globalData;
    this.setData({
      userInfo
    })
    //判断当前用户是否为超级管理员 
    const oid = userInfo ? userInfo.openid : '';
    if (oid) { 
      //判断是否为管理员 
      wx.request({
        url: `${app.globalData.server}/wxGetPower`,
        data: {
          openid: oid
        },
        success: res => {
          const {role} = res.data
          this.setData({
            role
          })
        }
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})